{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## hw4-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from RidgeRegression import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "define a object"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ridge = RidReg()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load train data and test data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load train data and test data\n",
    "X_train, y_train = ridge.read_input_data('./data/hw4_train.dat')\n",
    "X_test, y_test = ridge.read_input_data('./data/hw4_test.dat')\n",
    "# add bias\n",
    "X_train = np.hstack((np.ones(X_train.shape[0]).reshape(-1,1), X_train))\n",
    "X_test = np.hstack((np.ones(X_test.shape[0]).reshape(-1,1), X_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "calculate Ein and Eout"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ein =  0.055\n",
      "Eout =  0.052\n"
     ]
    }
   ],
   "source": [
    "Ein, Eout = ridge.cal_Ein_Eout(X_train, y_train, X_test, y_test, lamda=11.26)\n",
    "print('Ein = ', Ein)\n",
    "print('Eout = ', Eout)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27ee0d97be0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (15.0, 5.0) # set default size of plots\n",
    "plt.subplot(121)\n",
    "plt.scatter(X_train[:,1], X_train[:,2], c=y_train)\n",
    "plt.title('train data')\n",
    "plt.subplot(122)\n",
    "plt.scatter(X_test[:,1], X_test[:,2], c=y_test)\n",
    "plt.title('test data')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## hw4-2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "calculate Eval & Eout respect different lambda"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lamda_val =  1\n",
      "Eval_val =  0.0375\n",
      "Eout_val =  0.028\n"
     ]
    }
   ],
   "source": [
    "lamda_val, Eval_val, Eout_val = ridge.cal_val(X_train, y_train, X_test, y_test)\n",
    "print('lamda_val = ', lamda_val)\n",
    "print('Eval_val = ', Eval_val)\n",
    "print('Eout_val = ', Eout_val)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## hw4-3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "5-folds cross validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lamda_cross =  1e-08\n",
      "Eval_cross =  0.03\n"
     ]
    }
   ],
   "source": [
    "lamda_cross, Eval_cross, Eval_all = ridge.cross_val(X_train, y_train)\n",
    "print('lamda_cross = ', lamda_cross)\n",
    "print('Eval_cross = ', Eval_cross)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot different Eval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27ee0d97400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(Eval_all, '-or')\n",
    "plt.xlabel(r'$\\lambda$')\n",
    "plt.ylabel('Eval')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
